<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/3/27
 * Time: 15:03
 */

namespace app\index\controller;

# 静态代理
class Demo1
{
    public function getName($name = 'phphpphp'){
        return 'hello '.$name;
    }

    public function getMethod(\app\common\Temp $temp){
        $temp->setName('php 中午好');
        return $temp->getName();
    }

    // 绑定一个类到容器
    public function bindClass(){
        // 把一个类放到容器中：相当于注册到容器中
        \think\Container::set('temp', '\app\common\Temp');
        # 使用助手函数也可以
//        bind('temp', '\app\common\Temp');

        // 将容器中的类实例化并取出来用：实例化时调用构造器进行初始化
        $temp = \think\Container::get('temp', ['name'=>'点对点']);

//        $temp = app('temp', ['name'=>'的地方公共']);

        return $temp->getName();
    }

    // 绑定一个闭包到容器
    public function bindClosure(){

        config('app_debug',true);

        // 把一个闭包放到容器中：相当于注册到容器中
        \think\Container::set('temp', function($domain){
            return '网站地址是: '.$domain;
        });


        // 将容器中的类实例化并取出来用：实例化时调用构造器进行初始化
        return \think\Container::get('temp', ['domain'=>'www.viptijian.com']);
    }
}